package utils;

/**
 * 数组工具类
 * @author 罗智壕-13424431416
 *
 * 2017年4月10日
 */
public class ArrayUtil {
	public static void main(String[] args) {
		final int a = 10;
		System.out.println(1 + a);
	}
	/**
	 * 数组互换位置
	 * @param arrays	需要互换的数组
	 * @param i			需要互换的下标
	 * @param j			需要互换的下标
	 */
	public static void dataPosition(int[] arrays,int i,int j){
		int temp = arrays[i];
		arrays[i] = arrays[j];
		arrays[j] = temp;
	}
	
	/**
	 * int数组打印
	 * @param arrays	需要打印的数组
	 */
	public static void arrayPrint(int[] arrays){
		System.out.print("[");
		for(int i=0; i<arrays.length; i++){
			if(i == arrays.length-1){
				System.out.print(arrays[i]);
			}else{
				System.out.print(arrays[i]+",");
			}
		}
		System.out.print("]");
	}
	
	/**
	 * String数组打印
	 * @param arrays
	 */
	public static void arrayPrint(String[] arrays){
		System.out.print("[");
		for(int i=0; i<arrays.length; i++){
			if(i == arrays.length-1){
				System.out.print(arrays[i]);
			}else{
				System.out.print(arrays[i]+",");
			}
		}
		System.out.print("]");
	}
	
	/**
	 * 对象数组打印
	 * @param arrays
	 */
	public static void arrayPrint(Object[] arrays){
		for(int i=0; i<arrays.length; i++){
			if(i == arrays.length-1){
				System.out.print(arrays[i]);
			}else{
				System.out.print(arrays[i]+"\n");
			}
		}
	}
	
	/**
	 * 快速排序法
	 * @param arrays	需要排序的数组
	 * @param begin		开始排序的下标
	 * @param end		结束排序的下标
	 */
	public static void quickSort(int[] arrays,int begin,int end){
		int i = begin;
		int j = end;
		
		if(begin >= end){
			return;
		}
		
		int key = arrays[begin];
		
		while(true){
			while(j > i){
				if(arrays[j] < key){
					ArrayUtil.dataPosition(arrays, i, j);
					break;
				}else{
					j--;
				}
			}
			while(j > i){
				if(arrays[i] > key){
					ArrayUtil.dataPosition(arrays, i, j);
					break;
				}else{
					i++;
				}
			}
			
			if(i == j){
				break;
			}
		}
		
		quickSort(arrays, begin, i-1);
		quickSort(arrays, i+1, end);
	}
}
